#pragma once
template<class Iterator, class Ref, class Ptr>
struct ReverseIterator
{
	typedef ReverseIterator<Iterator, Ref, Ptr> self;
	Iterator _cur;
	ReverseIterator(Iterator it)
		:_cur(it)
	{}
	self& operator++()
	{
		--_cur;
		return *this;
	}
	Ref operator*()
	{
		Iterator tmp = _cur;
		--tmp;
		return *tmp;
	}
	bool operator!=(const self& s)
	{
		return _cur != s._cur;
	}
};
